package com.explorati.LeetCode009.isPalindrome;

/**
 * @ Author : Weijian_Wang
 * @ Date : Created in 21:37 2020/9/20 0020
 * @ Description ：回文数 改进
 */
public class Solution1 {
    public boolean isPalindrome(int x) {
        /**
         * 1. 如果x是负数或者x大于0但是末尾为0，直接返回false
         * 2. 创建另一个数y，保存x翻转后的值  x/10依次放入y中 y = y * 10 + x / 10;
         * 3. 当y大于等于x的时候，说明x已经过半了，此时对比x和y是否相同
         * 4. 如果x为偶数，y==x就看是否对称；为奇数，那么就比较y/10 == x
         */

        if(x < 0 || (x > 0 && x % 10 == 0)) {
            return false;
        }

        int y = 0;
        while(y < x) {
            y = y * 10 + x % 10;
            x = x / 10;
        }

        return y > x ? y / 10 == x : y == x;
    }
}
